/**
 * Utilidades
 *
 * @author Pedro Junior <v.ju.ni.or.v@gmail.com>
 */

/**
 * Para facilitar a verificação de uma função
 */
Function.prototype.isFunction = true;

/**
 * Adiciona novo método para a Funcão referente
 *
 * @param {string} nome
 * @param {function} handler
 * @return {function}
 */
Function.prototype.method = function(nome, handler){
    this.prototype[nome] = handler;

    return this;
};

/**
 * Faz com que a Função referente herde as caracteristicas de parent
 *
 * @param {object} parent
 * @return {function}
 */
Function.prototype.extend = function(parent){
    this.prototype = parent;

    return this;
};

/**
 * Retorna uma nova instância da Função referente
 *
 * @return {object}
 */
Function.prototype.New = function()
{
    return new this(); // new this.constructor()
};